package com.jtny.nytb.datafilling.service;


import com.jtny.nytb.datafilling.vo.*;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.List;
import java.util.Map;


/**
 * 能源价格填模板填报接口
 *
 * @author 智慧能源中心-罗霄林
 * @version 1.0
 * @package com.jtny.nytb.energymonitor.datafilling.biz
 * @fileName GensetBiz.java
 * @createTime 2023年09月05日 10:49
 * @Copyright© 2023 jtny
 * 江投能源技术研究院 版权所有
 */
public interface EnergyPriceTempletService {

    /**
     * 能源价格模板查询
     *
     * @param energyPriceTempletParamVO 能源价格模板查询请求参数
     * @return 返回能源价格模板查询VO对象
     */
    List<EnergyPriceTempletVO> queryEnergyPriceTempletInfo(EnergyPriceTempletParamVO energyPriceTempletParamVO);

    /**
     * 保存能源价格模板
     *
     * @param energyPriceTempletParamVO 能源价格模板查询请求参数
     * @return 返回保存结果
     */
    Boolean saveEnergyPriceTempletData(EnergyPriceTempletParamVO energyPriceTempletParamVO);

    /**
     * 修改能源价格模板
     *
     * @param energyPriceTempletParamVO 能源价格模板查询请求参数
     * @return 返回修改结果
     */
    void modfiyEnergyPriceTempletData(EnergyPriceTempletParamVO energyPriceTempletParamVO);

    /**
     * 删除能源价格模板
     *
     * @param id 能源价格模板查询请求参数
     * @return 返回删除结果
     */
    Boolean delEnergyPriceTempletData(String id);

    /**
     * 查询能源价格配置填报界面 制度选择
     *
     * @param typeId 能源类型id
     * @return 返回制度和名称下拉内容
     */
    Map<String, List<String>> queryInstitution(String typeId);


    NameOrGroupContentVO queryName(String typeId, String Institution);

    /**
     * Excel数据导入
     *
     * @param file
     * @return
     */
    Boolean importEnergyPriceTempletData(MultipartFile file, String typeId) throws IOException, InvocationTargetException, IllegalAccessException, InstantiationException;


    void downloadPriceTemplate(HttpServletResponse response, String type);

    List<EnergyModelVO> getEnergyPriceTempletInfo(EnergyModelPriceParamVO energyModelPriceParamVO);

    void deleteEnergyTemplate(Long id);

    List<EnergyModelVO> getEnergyTemplateInfo(Long id);


    List<String> queryLevel(EnergyPriceTempletParamVO energyModelVO);


    List<String> queryElType(String typeId);

    void deleteEnergyTemplateById(Long id);
}
